package com.logic;


import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import com.persistence.Dependent;

/* Logica de Luis G.*/

public class DependentLogic {
	EntityManager em;
	EntityManagerFactory emf;

	private EntityManager inicializarEntityManager() {
		emf = Persistence.createEntityManagerFactory("ProyectoToby");
		return emf.createEntityManager();
	}

	public void grabarOactualizar(Dependent ms) {
		em = inicializarEntityManager();
		em.getTransaction().begin();
		Dependent dependiente = null;
		try {
			if (ms.getId() == null) {
				// si getId es null significa No Existe
				System.out.println("LE DIO PERSIST");
				em.persist(ms);
				System.out.println("FIN PERSIST");
			} else {
				// De lo contrario Actualizar
				System.out.println("ENTRO ACTUALIZAR");
				dependiente = em.find(Dependent.class, new Long(ms.getId()));
				if (dependiente != null) {
					dependiente = ms;
					em.merge(dependiente);
				}
			}
			em.getTransaction().commit();
		} catch (Exception e) {
			em.getTransaction().rollback();
		} finally {
			em.close();
			emf.close();

		}

	}

	public void eliminar(Integer codigo) {

		System.out.println("CODIGO DE LLEGADA " + codigo);
		em = inicializarEntityManager();
		em.getTransaction().begin();
		Dependent dependiente = null;
		try {
			dependiente = em.find(Dependent.class, codigo);
			if (dependiente != null) {

				System.out.println("REMOVIO");
				em.remove(dependiente);
			}

			em.getTransaction().commit();
		} catch (Exception e) {
			em.getTransaction().rollback();
		} finally {
			em.close();
			emf.close();

		}

	}

	public List<Dependent> getAll() {
		em = inicializarEntityManager();
		List<Dependent> dependientes = (List<Dependent>) em.createNamedQuery(
				"selectallMiembros").getResultList();
		return dependientes;
	}
	
	
	
	public Dependent buscaPorCodigo(Integer codigo)throws Exception{
		
		em = inicializarEntityManager();
		Dependent dependiente = em.find(Dependent.class, codigo);
	
	System.out.println("CODIGO " + dependiente.getId());
		return dependiente;
		
	}
		
	
}
